///If
//If是分支 (branch) 的一种特殊形式，也可以使用else和else if。 与C语言不同的是，逻辑条件不需要用小括号括起来，
// 但是条件后面必须跟一个代码块。 Rust中的if是一个表达式 (expression)，可以赋给一个变量：

//Rust是基于表达式的编程语言，有且仅有两种语句 (statement)：
//声明语句 (declaration statement)，比如进行变量绑定的let语句。
// 表达式语句 (expression statement)，它通过在末尾加上分号;来将表达式变成语句， 丢弃该表达式的值，一律返回unit()。

//// 形式 1
// if expr1 {
//
// }
//
// // 形式 2
// if expr1 {
//
// }
// else {
//
// }
//
// // 形式 3
// if expr1 {
//
// }
// else if expr2 {
//     // else if 可多重
// }
// else {
//
// }

//相对于 C 系语言，Rust 的 if 表达式的显著特点是：
//
// 判断条件不用小括号括起来；
// 它是表达式，而不是语句。
#[test]
pub fn if_demo(){
    let x = 5;

    let y = if x == 5 { 10 } else { 15 };

    println!("{}", y);
}
///if let 成对出现，这实际上是一个 match 的简化用法
#[test]
pub fn if_let_demo(){
    let x = Some(5);

    if let Some(y) = x {
        println!("{}", y);      // 这里输出为：5
    }


    let z = if let Some(y) = x {
        y
    }
    else {
        0
    };
    println!("{}", z); //5
}

///上面代码等价于
#[test]
pub fn match_demo(){
    let x = Some(5);
    match x {
        Some(y) => println!("{}", y),
        None => ()
    }

    let z = match x {
        Some(y) => y,
        None => 0
    };
}